package com.zhou.spring.cloud.balancer.feign.mode;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

@Data
public class PaymentInfoQueryDto {

    @NotNull
    @JsonProperty("track_app_id")
    @ApiModelProperty("外部接口标识")
    private String trackAppId = "903";

    @NotNull
    @JsonProperty("mof_div_code")
    @ApiModelProperty("区划代码")
    private String mofDivCode;

    @NotNull
    @JsonProperty("fiscal_year")
    @ApiModelProperty("业务年度")
    private String fiscalYear = LocalDate.now().getYear() + "";


    /**
     * 申请列表
     */
    @JsonProperty("voucher_detail")
    private List<VoucherDetailDto> voucherDetail;

    @Data
    public static class VoucherDetailDto {
        /**
         * 指标主键  每年的指标信息 必填
         * M
         */
        @JsonProperty("bgt_id")
        private String bgtId;
        /**
         * 单位代码 M
         */
        @JsonProperty("agency_code")
        private String agencyCode;
        /**
         * 单位名称
         */
        @JsonProperty("agency_name")
        private String agencyName;

        /**
         * 支付申请金额 M
         */
        @JsonProperty("pay_app_amt")
        private BigDecimal payAppAmt;
        /**
         * 批次号 M
         */
        @JsonProperty("batch_no")
        private String batchNo;
        /**
         * 用途 M
         */
        @JsonProperty("use_des")
        private String useDes;


        /**
         * 收款人全称
         */
        @JsonProperty("payee_acct_name")
        private String payeeAcctName;

        /**
         * 收款人账号
         */
        @JsonProperty("payee_acct_no")
        private String payeeAcctNo;
        /**
         * 收款人开户银行
         */
        @JsonProperty("payee_acct_bank_name")
        private String payeeAcctBankName;
        /**
         * 收款人银行行号
         */
        @JsonProperty("payee_acct_bank_no")
        private String payeeAcctBankNo;
        /**
         * 业务类型代码 M
         */
        @JsonProperty("pay_bus_type_code")
        private String payBusTypeCode;
        /**
         * 业务类型名称 M
         */
        @JsonProperty("pay_bus_type_name")
        private String payBusTypeName;
        /**
         * 结算方式代码 M
         */
        @JsonProperty("set_mode_code")
        private String setModeCode;
        /**
         * 结算方式名称 M
         */
        @JsonProperty("set_mode_name")
        private String setModeName;
        /**
         * 支付方式代码 M
         */
        @JsonProperty("pay_type_code")
        private String payTypeCode;
        /**
         * 支付方式名称 M
         */
        @JsonProperty("pay_type_name")
        private String payTypeName;
        /**
         * 资金往来对象类别代码 M
         */
        @JsonProperty("fund_traobj_type_code")
        private String fundTraobjTypeCode;
        /**
         * 资金往来对象类别名称 M
         */
        @JsonProperty("fund_traobj_type_name")
        private String fundTraobjTypeName;
        /**
         * 单位内部机构代码 M
         */
        @JsonProperty("internal_dep_code")
        private String internalDepCode;
        /**
         * 单位内部机构名称 M
         */
        @JsonProperty("internal_dep_name")
        private String internalDepName;
        /**
         * 政府支出经济分类代码
         */
        @JsonProperty("gov_bgt_eco_code")
        private String govBgtEcoCode;
        /**
         * 政府支出经济分类名称
         */
        @JsonProperty("gov_bgt_eco_name")
        private String govBgtEcoName;
        /**
         * 部门支出经济分类代码
         */
        @JsonProperty("dep_bgt_eco_code")
        private String depBgtEcoCode;
        /**
         * 部门支出经济分类名称
         */
        @JsonProperty("dep_bgt_eco_name")
        private String depBgtEcoName;
        /**
         * 业务追溯ID M
         */
        @JsonProperty("tracking_id")
        private String trackingId;
    }
}
